[INFO] fetching crate retro-core 2.0.1...
[INFO] testing retro-core-2.0.1 against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065-1
[INFO] extracting crate retro-core 2.0.1 into /workspace/builds/worker-0-tc2/source
[INFO] started tweaking crates.io crate retro-core 2.0.1
[INFO] finished tweaking crates.io crate retro-core 2.0.1
[INFO] tweaked toml for crates.io crate retro-core 2.0.1 written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate retro-core 2.0.1 on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate retro-core 2.0.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 6d5220b8902bfcb1c0bcf4add7931ddc81e49c133b621716e4d254526209db83
[INFO] running `Command { std: "docker" "start" "-a" "6d5220b8902bfcb1c0bcf4add7931ddc81e49c133b621716e4d254526209db83", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6d5220b8902bfcb1c0bcf4add7931ddc81e49c133b621716e4d254526209db83", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6d5220b8902bfcb1c0bcf4add7931ddc81e49c133b621716e4d254526209db83", kill_on_drop: false }`
[INFO] [stdout] 6d5220b8902bfcb1c0bcf4add7931ddc81e49c133b621716e4d254526209db83
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 500155cd5e87576c4821fe525f237e81c1daaf9a3961508be468d17235e07b47
[INFO] running `Command { std: "docker" "start" "-a" "500155cd5e87576c4821fe525f237e81c1daaf9a3961508be468d17235e07b47", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.23
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling uuid v1.20.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling syn v2.0.115
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling retro-core v2.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: constant `SCHEMA_VERSION` is never used
[INFO] [stdout]   --> src/db.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const SCHEMA_VERSION: u32 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 30.11s
[INFO] running `Command { std: "docker" "inspect" "500155cd5e87576c4821fe525f237e81c1daaf9a3961508be468d17235e07b47", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "500155cd5e87576c4821fe525f237e81c1daaf9a3961508be468d17235e07b47", kill_on_drop: false }`
[INFO] [stdout] 500155cd5e87576c4821fe525f237e81c1daaf9a3961508be468d17235e07b47
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 930216f4c4a36fab2ebbe2f9a005b4de115e17e41a8872c4d31c122b0aaeb222
[INFO] running `Command { std: "docker" "start" "-a" "930216f4c4a36fab2ebbe2f9a005b4de115e17e41a8872c4d31c122b0aaeb222", kill_on_drop: false }`
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling retro-core v2.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: constant `SCHEMA_VERSION` is never used
[INFO] [stdout]   --> src/db.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const SCHEMA_VERSION: u32 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCHEMA_VERSION` is never used
[INFO] [stdout]   --> src/db.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const SCHEMA_VERSION: u32 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 12.38s
[INFO] running `Command { std: "docker" "inspect" "930216f4c4a36fab2ebbe2f9a005b4de115e17e41a8872c4d31c122b0aaeb222", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "930216f4c4a36fab2ebbe2f9a005b4de115e17e41a8872c4d31c122b0aaeb222", kill_on_drop: false }`
[INFO] [stdout] 930216f4c4a36fab2ebbe2f9a005b4de115e17e41a8872c4d31c122b0aaeb222
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 9ddf7c645c97aaca4ef319506101a9303742622bff5427faf9a2425eb49b2699
[INFO] running `Command { std: "docker" "start" "-a" "9ddf7c645c97aaca4ef319506101a9303742622bff5427faf9a2425eb49b2699", kill_on_drop: false }`
[INFO] [stderr] warning: constant `SCHEMA_VERSION` is never used
[INFO] [stderr]   --> src/db.rs:13:7
[INFO] [stderr]    |
[INFO] [stderr] 13 | const SCHEMA_VERSION: u32 = 5;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `retro-core` (lib) generated 1 warning
[INFO] [stderr] warning: `retro-core` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.11s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/retro_core-5ffcdbc8ac6ca271)
[INFO] [stdout] 
[INFO] [stdout] running 209 tests
[INFO] [stdout] test analysis::merge::tests::test_case_insensitive ... ok
[INFO] [stdout] test analysis::merge::tests::test_completely_different ... ok
[INFO] [stdout] test analysis::merge::tests::test_identical_strings ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_analysis_prompt_no_full_management ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_analysis_prompt_without_context ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_analysis_prompt_full_management ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_analysis_prompt_with_context ... ok
[INFO] [stdout] test analysis::merge::tests::test_similar_strings ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_audit_prompt_all_present ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_context_summary_empty ... ok
[INFO] [stdout] test analysis::merge::tests::test_empty_strings ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_context_summary_no_managed_section ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_context_summary_full ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_curate_prompt_empty_claude_md ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_curate_prompt ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_context_summary_budget_cap ... ok
[INFO] [stdout] test analysis::tests::test_analysis_response_schema_is_valid_json ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_audit_prompt_partial ... ok
[INFO] [stdout] test analysis::tests::test_graph_analysis_schema_is_valid_json ... ok
[INFO] [stdout] test analysis::tests::test_full_management_analysis_schema_contains_claude_md_edits ... ok
[INFO] [stdout] test analysis::tests::test_full_management_schema_preserves_base_patterns ... ok
[INFO] [stdout] test analysis::tests::test_parse_analysis_response_json ... ok
[INFO] [stdout] test analysis::tests::test_parse_analysis_response_null_fields ... ok
[INFO] [stdout] test analysis::tests::test_parse_analysis_response_empty ... ok
[INFO] [stdout] test briefing::tests::test_generate_briefing_with_applied ... ok
[INFO] [stdout] test analysis::tests::test_parse_analysis_response_missing_reasoning_defaults_empty ... ok
[INFO] [stdout] test analysis::tests::test_full_management_analysis_schema_is_valid_json ... ok
[INFO] [stdout] test analysis::tests::test_full_management_schema_claude_md_edits_not_required ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_audit_prompt_none_present ... ok
[INFO] [stdout] test config::tests::test_claude_md_config_absent ... ok
[INFO] [stdout] test config::tests::test_hooks_config_defaults ... ok
[INFO] [stdout] test config::tests::test_claude_md_config_defaults ... ok
[INFO] [stdout] test analysis::tests::test_parse_analysis_response_pure_prose_fails ... ok
[INFO] [stdout] test briefing::tests::test_generate_briefing_empty ... ok
[INFO] [stdout] test config::tests::test_claude_md_config_custom ... ok
[INFO] [stdout] test briefing::tests::test_generate_briefing_with_pending ... ok
[INFO] [stdout] test analysis::tests::test_parse_graph_response ... ok
[INFO] [stdout] test config::tests::test_hooks_config_max_sessions_custom ... ok
[INFO] [stdout] test config::tests::test_hooks_config_max_sessions_default ... ok
[INFO] [stdout] test config::tests::test_hooks_config_new_fields_deserialize ... ok
[INFO] [stdout] test config::tests::test_knowledge_config_defaults ... ok
[INFO] [stdout] test config::tests::test_runner_config_defaults ... ok
[INFO] [stdout] test config::tests::test_trust_config_defaults ... ok
[INFO] [stdout] test config::tests::test_hooks_config_partial_deserialize ... ok
[INFO] [stdout] test curator::tests::test_audit_response_schema_is_valid_json ... ok
[INFO] [stdout] test config::tests::test_v2_config_deserialize ... ok
[INFO] [stdout] test config::tests::test_v1_config_still_loads ... ok
[INFO] [stdout] test db::tests::test_generate_project_slug ... ok
[INFO] [stdout] test db::tests::test_auto_apply_data_triggers_full_flow ... ok
[INFO] [stdout] test db::tests::test_get_nodes_by_scope_and_status ... ok
[INFO] [stdout] test db::tests::test_get_patterns_by_status ... ok
[INFO] [stdout] test db::tests::test_dismiss_nodes_for_pr ... ok
[INFO] [stdout] test db::tests::test_existing_projections_default_to_applied ... ok
[INFO] [stdout] test db::tests::test_delete_projection ... ok
[INFO] [stdout] test db::tests::test_apply_graph_operations ... ok
[INFO] [stdout] test db::tests::test_get_nodes_by_status ... ok
[INFO] [stdout] test db::tests::test_apply_graph_operations_update ... ok
[INFO] [stdout] test db::tests::test_clear_node_pr ... ok
[INFO] [stdout] test db::tests::test_get_last_nudge_at_empty ... ok
[INFO] [stdout] test db::tests::test_get_pending_review_projections ... ok
[INFO] [stdout] test db::tests::test_analyzed_session_tracking ... ok
[INFO] [stdout] test db::tests::test_get_unprojected_nodes ... ok
[INFO] [stdout] test db::tests::test_get_project_by_remote_url ... ok
[INFO] [stdout] test db::tests::test_get_all_projects ... ok
[INFO] [stdout] test db::tests::test_get_projected_pattern_ids_by_status ... ok
[INFO] [stdout] test db::tests::test_has_unanalyzed_sessions_after_analysis ... ok
[INFO] [stdout] test db::tests::test_get_projections_with_pr_url ... ok
[INFO] [stdout] test db::tests::test_has_unanalyzed_sessions_with_new_session ... ok
[INFO] [stdout] test db::tests::test_has_unanalyzed_sessions_empty ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_excludes_dismissed ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_empty ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_excludes_generation_failed ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_excludes_dbonly ... ok
[INFO] [stdout] test db::tests::test_mark_node_projected_with_pr ... ok
[INFO] [stdout] test db::tests::test_insert_and_get_edges ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_excludes_pending_review ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_after_projection ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_with_discovered ... ok
[INFO] [stdout] test db::tests::test_insert_and_get_node ... ok
[INFO] [stdout] test db::tests::test_pattern_merge_update ... ok
[INFO] [stdout] test db::tests::test_insert_and_get_pattern ... ok
[INFO] [stdout] test db::tests::test_last_applied_at_empty ... ok
[INFO] [stdout] test db::tests::test_insert_and_check_projection ... ok
[INFO] [stdout] test db::tests::test_mark_node_projected ... ok
[INFO] [stdout] test db::tests::test_last_applied_at_returns_max ... ok
[INFO] [stdout] test db::tests::test_supersede_node_archives_old ... ok
[INFO] [stdout] test db::tests::test_migrate_patterns_to_nodes ... ok
[INFO] [stdout] test db::tests::test_update_pattern_status ... ok
[INFO] [stdout] test db::tests::test_projection_status_column_exists ... ok
[INFO] [stdout] test db::tests::test_unanalyzed_session_count ... ok
[INFO] [stdout] test db::tests::test_update_node_confidence ... ok
[INFO] [stdout] test db::tests::test_set_and_get_last_nudge_at ... ok
[INFO] [stdout] test db::tests::test_projections_nudged_column_defaults_to_zero ... ok
[INFO] [stdout] test db::tests::test_migrate_v4_to_v5_adds_projection_columns ... ok
[INFO] [stdout] test git::tests::test_remove_hook_lines_multiple_markers ... ok
[INFO] [stdout] test git::tests::test_remove_hook_lines_no_marker ... ok
[INFO] [stdout] test git::tests::test_remove_hook_lines_basic ... ok
[INFO] [stdout] test git::tests::test_remove_hook_lines_preserves_other_hooks ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_missing_description ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_missing_name ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_no_frontmatter ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_single_quoted ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_quoted ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_standard ... ok
[INFO] [stdout] test db::tests::test_update_projection_status ... ok
[INFO] [stdout] test ingest::tests::test_encode_project_path ... ok
[INFO] [stdout] test ingest::tests::test_naive_decode_project_path ... ok
[INFO] [stdout] test models::tests::test_analysis_response_without_edits ... ok
[INFO] [stdout] test models::tests::test_analysis_response_with_edits ... ok
[INFO] [stdout] test models::tests::test_claude_md_edit_type_display ... ok
[INFO] [stdout] test models::tests::test_edge_type_display_and_from_str ... ok
[INFO] [stdout] test models::tests::test_claude_md_edit_type_serde ... ok
[INFO] [stdout] test models::tests::test_graph_analysis_response_deserialize ... ok
[INFO] [stdout] test models::tests::test_knowledge_edge_struct ... ok
[INFO] [stdout] test models::tests::test_knowledge_node_struct ... ok
[INFO] [stdout] test models::tests::test_node_scope_display_and_from_str ... ok
[INFO] [stdout] test models::tests::test_node_status_display_and_from_str ... ok
[INFO] [stdout] test models::tests::test_node_type_display_and_from_str ... ok
[INFO] [stdout] test db::tests::test_v4_migration_from_v3 ... ok
[INFO] [stdout] test db::tests::test_sessions_for_analysis ... ok
[INFO] [stdout] test models::tests::test_projection_status_from_str ... ok
[INFO] [stdout] test db::tests::test_upsert_and_get_project ... ok
[INFO] [stdout] test db::tests::test_v4_migration_creates_tables ... ok
[INFO] [stdout] test db::tests::test_set_generation_failed ... ok
[INFO] [stdout] test models::tests::test_projection_status_display ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edit_add ... ok
[INFO] [stdout] test db::tests::test_update_node_status ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edit_remove ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edit_reword ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edit_reword_first_only ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edits_batch ... ok
[INFO] [stdout] test ingest::context::tests::test_read_plugin_skills_no_file ... ok
[INFO] [stdout] test git::tests::test_install_hooks_up_to_date ... ok
[INFO] [stdout] test git::tests::test_install_hooks_only_post_commit ... ok
[INFO] [stdout] test git::tests::test_install_hooks_removes_old_post_merge ... ok
[INFO] [stdout] test projection::claude_md::tests::test_build_managed_section ... ok
[INFO] [stdout] test git::tests::test_install_hooks_preserves_non_retro_post_merge ... ok
[INFO] [stdout] test observer::tests::test_find_modified_sessions_detects_new_files ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edit_remove_multiline ... ok
[INFO] [stdout] test projection::claude_md::tests::test_dissolve_managed_section ... ok
[INFO] [stdout] test projection::claude_md::tests::test_dissolve_no_managed_section ... ok
[INFO] [stdout] test projection::claude_md::tests::test_has_managed_section ... ok
[INFO] [stdout] test git::tests::test_install_hooks_updates_old_redirect ... ok
[INFO] [stdout] test git::tests::test_install_hooks_updates_preserves_other_hooks ... ok
[INFO] [stdout] test projection::claude_md::tests::test_read_managed_section ... ok
[INFO] [stdout] test projection::claude_md::tests::test_project_rule_to_claude_md ... ok
[INFO] [stdout] test projection::claude_md::tests::test_read_managed_section_none ... ok
[INFO] [stdout] test projection::claude_md::tests::test_update_claude_md_empty_file ... ok
[INFO] [stdout] test observer::tests::test_find_modified_sessions_skips_unchanged ... ok
[INFO] [stdout] test projection::claude_md::tests::test_update_claude_md_no_existing_section ... ok
[INFO] [stdout] test projection::claude_md::tests::test_update_claude_md_replace_existing ... ok
[INFO] [stdout] test projection::global_agent::tests::test_parse_agent_name_invalid ... ok
[INFO] [stdout] test projection::global_agent::tests::test_parse_agent_name_no_frontmatter ... ok
[INFO] [stdout] test projection::global_agent::tests::test_parse_agent_name_quoted ... ok
[INFO] [stdout] test projection::global_agent::tests::test_parse_agent_name_valid ... ok
[INFO] [stdout] test projection::skill::tests::test_has_valid_frontmatter ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_skill_name_invalid_chars ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_skill_name_no_frontmatter ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_skill_name_quoted ... ok
[INFO] [stdout] test projection::global_agent::tests::test_agent_path ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_validation_invalid ... ok
[INFO] [stdout] test projection::skill::tests::test_skill_path ... ok
[INFO] [stdout] test projection::skill::tests::test_skill_validation_schema_is_valid_json ... ok
[INFO] [stdout] test projection::skill::tests::test_node_to_pattern ... ok
[INFO] [stdout] test projection::tests::test_dissolve_if_needed_no_file ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_validation_valid ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_skill_name_valid ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_empty ... ok
[INFO] [stdout] test projection::tests::test_dissolve_if_needed_without_managed ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_json_without_edit_type ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_plain_rule ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_remove ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_reword ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_add ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_with_whitespace ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_invalid_edit_type_returns_none ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_missing_edit_type_returns_none ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_plain_text_returns_none ... ok
[INFO] [stdout] test runner::tests::test_rotate_log_no_file_ok ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_remove ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_move ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_reword ... ok
[INFO] [stdout] test runner::tests::test_rotate_log_skips_small_file ... ok
[INFO] [stdout] test trust::tests::test_auto_mode_respects_type_config ... ok
[INFO] [stdout] test trust::tests::test_auto_mode_respects_scope_config ... ok
[INFO] [stdout] test trust::tests::test_review_mode_never_auto_approves ... ok
[INFO] [stdout] test util::tests::test_no_fences ... ok
[INFO] [stdout] test util::tests::test_shorten_path_no_home_prefix ... ok
[INFO] [stdout] test util::tests::test_shorten_path_replaces_home ... ok
[INFO] [stdout] test util::tests::test_strip_bare_fences ... ok
[INFO] [stdout] test util::tests::test_strip_json_fences ... ok
[INFO] [stdout] test util::tests::test_truncate_str_ascii ... ok
[INFO] [stdout] test util::tests::test_strip_yaml_fences ... ok
[INFO] [stdout] test util::tests::test_truncate_str_empty ... ok
[INFO] [stdout] test util::tests::test_truncate_str_no_truncation ... ok
[INFO] [stdout] test runner::tests::test_ai_calls_today_new_day_resets ... ok
[INFO] [stdout] test util::tests::test_shorten_path_buf_works ... ok
[INFO] [stdout] test util::tests::test_truncate_str_utf8_boundary ... ok
[INFO] [stdout] test util::tests::test_whitespace_trimmed ... ok
[INFO] [stdout] test runner::tests::test_last_run_time_none_when_not_set ... ok
[INFO] [stdout] test runner::tests::test_last_run_time_returns_timestamp ... ok
[INFO] [stdout] test projection::tests::test_dissolve_if_needed_with_managed ... ok
[INFO] [stdout] test runner::tests::test_ai_calls_today_same_day ... ok
[INFO] [stdout] test scrub::tests::test_scrub_aws_key ... ok
[INFO] [stdout] test scrub::tests::test_no_scrub_normal_text ... ok
[INFO] [stdout] test scrub::tests::test_scrub_github_token ... ok
[INFO] [stdout] test runner::tests::test_rotate_log_rotates_large_file ... ok
[INFO] [stdout] test scrub::tests::test_scrub_bearer ... ok
[INFO] [stdout] test runner::tests::test_rotate_log_overwrites_old_backup ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 209 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests retro_core
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "9ddf7c645c97aaca4ef319506101a9303742622bff5427faf9a2425eb49b2699", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9ddf7c645c97aaca4ef319506101a9303742622bff5427faf9a2425eb49b2699", kill_on_drop: false }`
[INFO] [stdout] 9ddf7c645c97aaca4ef319506101a9303742622bff5427faf9a2425eb49b2699
